NodeJS-sequelize研究

關於
Node.js其中有一個項目叫sequelize,在學習的過程中,記錄當下學習的理解與心得,所以會以類似API文件的方式進行撰寫,但又不完全以官方的文件直接翻譯,主要是給自己看,也可以給別人一些參考,理解過程中不一定百分之百都是正確的,有不正確的地方也歡迎提出自己的想法與大家切磋交流。
貼文分類
誰來我家
  • 05-03  訪客(52.167.144.*)
  • 05-02  訪客(123.186.75.*)
  • 05-02  訪客(52.167.144.*)
  • 05-02  訪客(123.186.74.*)
參觀人氣
本日人氣: 1
累積人氣: 9,764
分享 推播通知
目前身份: 訪客

所謂的定義方式,就是我要怎麼去用Model操作資料表。Sequelize就是讓我們去操作資料庫用的,它裡面有Model,Model就是讓我們去操作資料表的。

 

那麼要去操作資料表之前,就要先定義,定義好之後,才能操作你的資料表。

 

定義的方式有2種:

1、sequelize.define

2、使用 Extend Model,再用init

 

使用 sequelize.define

 

const { Sequelize, DataTypes } = require('sequelize');
const sequelize = new Sequelize('sqlite::memory:');

const User = sequelize.define('User', {
  // Model 的屬性都是定義在這裡
  firstName: {
    type: DataTypes.STRING,
    allowNull: false
  },
  lastName: {
    type: DataTypes.STRING
    // allowNull 如果沒有填寫,預設就是允許它null
  }
}, {
  // 其它的 model 選項填寫在這裡
});

// `sequelize.define` 也可以回傳定義的 model
console.log(User === sequelize.models.User); // true

 

 

使用 Extend Model,再用init 

 

const { Sequelize, DataTypes, Model } = require('sequelize');
const sequelize = new Sequelize('sqlite::memory');

class User extends Model {}

User.init({
  // Model 的屬性都是定義在這裡
  firstName: {
    type: DataTypes.STRING,
    allowNull: false
  },
  lastName: {
    type: DataTypes.STRING
    // allowNull 如果沒有填寫,預設就是允許它null
  }
}, {
  // 其它的 model 選項填寫在這裡
  sequelize, // We need to pass the connection instance
  modelName: 'User' // 我們需要設一個 model 名稱給它
});

// 定義好後 User就跟 sequelize.models.User 是一樣的
console.log(User === sequelize.models.User); // true

 

這2個方法都是一樣的。

 

這時候要問一個問題,資料表的名稱是寫在哪裡?這個定義Model的名稱是叫 User,那我的資料表名稱是叫 users,沒看到定義哪裡有寫users阿?

 

這也是我剛才開接觸的時候,踩了很大的坑,搞不懂為什麼,將在下一節解釋。

 

 

人氣 2419
NodeJS-sequelize研究 發表在 留言 (0) 人氣 (2419)
第02章 Model基礎
分享給朋友
網址

想對外分享這則貼文嗎?運用網址更方便呦~

載入中...